package io;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
/**
 * 对象流java.io.ObjectOutputStream和java.io.ObjectInputStream
 * 对象流是一对高级流，可以方便我们读写任何java对象
 */
public class OOSDemo {
    public static void main(String[] args) throws IOException {
        //将一个Person对象写入文件person.obj
        /*
            1:想办法将Person对象转换为一组字节(高级流:ObjectOutputStream)
            2:这一组字节写入到文件中(低级流:FileOutputStream)
         */
        String name = "刘浩宇";
        int age = 4;
        String gender = "男";
        String [] otherInfo ={"喜欢吃各种水果零食","调皮捣蛋，打爸爸，亲妈妈","爱发脾气"};
        Person p = new Person(name,age,gender,otherInfo);
        FileOutputStream fos = new FileOutputStream("./person.obj");
        ObjectOutputStream oos = new ObjectOutputStream(fos);
        /*
            当我们进行对象序列化时，可能出现异常:
            java.io.NotSerializableException
            这是由于写出的对象没有实现序列化接口导致的。

            对象序列化:将一个对象按照其结构转换为一组字节的过程
            数据持久化:将数据写到磁盘上做长久保存
         */
        oos.writeObject(p);
        System.out.println("写出完毕！");
        oos.close();
    }
}
